# coding:utf-8

def data_analysis(src, protocol):
    src_arr = src.strip().split(" ")
    # 削去以太网数据报固定14个字节，剩下ip数据包
    ip_arr = src_arr[14:len(src_arr)]
    # 在ip数据包中提取总长度位（第三，四个字节）
    ip_len = int('{}{}'.format(ip_arr[2], ip_arr[3]), 16)
    # 是否丢弃尾部
    if ip_len != len(ip_arr):
        ip_arr = ip_arr[0: ip_len]
    # ip数据包中提取首部长度 (第一个字节的后四个比特位) * 4
    ip_head_len = int(ip_arr[0][1], 16) * 4
    # 削去ip数据包首部，得到UDP包
    remove_head_ip_arr = ip_arr[ip_head_len:len(ip_arr)]
    data_arr = get_data_in_udp(remove_head_ip_arr) if protocol == 'udp' else get_data_in_tcp(remove_head_ip_arr)
    return " ".join(data_arr)


def get_data_in_udp(udp_arr):
    # udp包中提取总长度，第五，六个字节
    udp_len = int('{}{}'.format(udp_arr[4], udp_arr[5]), 16)
    # 是否丢弃尾部
    if udp_len != len(udp_arr):
        udp_arr = udp_arr[0:udp_len]
    # 削去udp包固定头部8个字节，得到数据
    return udp_arr[8:len(udp_arr)]


def get_data_in_tcp(tcp_arr):
    # tcp包中提取tcp首部长度，第13个字节的前4个比特位 * 4
    tcp_head_len = int(tcp_arr[12][0], 16) * 4
    # 削去tcp头部得到数据
    return tcp_arr[tcp_head_len:len(tcp_arr)]



